<?php

/** @noinspection PhpPropertyCanBeReadonlyInspection */

/** @noinspection PhpPropertyCanBeReadonlyInspection */
declare(strict_types=1);

namespace Dreamcat\ApiDoc\Annotations;

use Attribute;
use JetBrains\PhpStorm\Immutable;

/**
 * 接口参数属性
 * @author vijay
 */
#[Attribute(Attribute::TARGET_PROPERTY | Attribute::TARGET_PARAMETER)]
#[Immutable]
class ApiModelProperty
{
    /** @var string 示例 */
    private string $example;

    /**
     * @param string $title 属性描述
     * @param string $mock mock定义
     * @param ?string $example 示例，如果使用null直接使用mock
     */
    public function __construct(private string $title, private string $mock = "", string $example = null)
    {
        $this->example = is_null($example) ? $this->mock : $example;
    }

    /**
     * @return string 示例
     */
    public function getExample(): string
    {
        return $this->example;
    }

    /**
     * @return string 属性描述
     */
    public function getTitle(): string
    {
        return $this->title;
    }

    /**
     * @return string mock定义
     */
    public function getMock(): string
    {
        return $this->mock;
    }
}

# end of file
